
//2972.统计移除递增子数组的数目II
class Solution {
public:
    long long incremovableSubarrayCount(vector<int>& nums) {
        //先找到前缀的第一个波峰
        int i=0,n=nums.size();
        while(i<n-1&&nums[i]<nums[i+1]) i++;
        if(i==n-1) return (long long)n*(n+1)/2;   //如果数组本身就是有序的，删除任意一个子数组都是可以的

        long long ret=i+2;   //ret是返回的结果，i+2是可以删除后缀的个数，从i位置向后一直删除完的个数
        int j=n-1;

        while(j==n-1||nums[j]<nums[j+1])
        {
            while(i>=0&&nums[i]>=nums[j]) i--;  //找到第一个小于nums[j]的位置，可以删除[]

            ret+=i+2;
            j--;
        }   
        return ret;
    }
};